package tech.aistar.day13;

/**
 * 本类用来演示: 获取class的几种方式
 *
 * @author: success
 * @date: 2022/8/4 9:59 上午
 */
public class ClassDemo {
    public static void main(String[] args) {
        Class<?> c1 = Point.class;//类名.class

        Point p1 = new Point();
        Point p2 = new Point();
        Class<?> c2 = p1.getClass();
        Class<?> c3 = p2.getClass();
        System.out.println(c2 == c3);//true

        //所有的类加载到JVM内存中之后,那么它在jvm中的class实例永远只有1个
        //class实例 - 理解为对象的运行时类型
        System.out.println(c1 == c2);//true

        //3. 推荐使用的
        try {
            Class<?> c4 = Class.forName("tech.aistar.day13.Point");

            //class tech.aistar.day13.Point
            System.out.println(c4);

            String s = c4.getName();// 获取类的全限定名
            System.out.println(s);// tech.aistar.day13.Point
            String simpleName = c4.getSimpleName();
            System.out.println(simpleName);//Point

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        System.out.println(int.class);//基本类型.class    int
    }
}
